﻿#region << 版 本 注 释 >>
/*----------------------------------------------------------------
 * 创建者：王明亮
 * 创建时间：2023/8/27 15:24:03
 * 版本：V1.0.0
 * 描述：
 *
 * ----------------------------------------------------------------
 * 修改人：
 * 时间：
 * 修改说明：
 *
 * 版本：V1.0.1
 *----------------------------------------------------------------*/
#endregion << 版 本 注 释 >>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace CreateType._01.单例模式
{
    /// <summary>
    /// SingleObject 单线程单例模式
    /// </summary>
    public class SingleObject
    {
        #region 第一种写法

        /// <summary>
        /// 创建 SingleObject 的一个对象
        /// </summary>
        private static SingleObject instance = new SingleObject();

        /// <summary>
        /// 让构造函数为 private，这样该类就不会被实例化
        /// </summary>
        private SingleObject() { }


        /// <summary>
        /// 获取全局唯一对象
        /// </summary>
        /// <returns></returns>
        public static SingleObject getInstance()
        {
            return instance;
        }

        #endregion

        #region 另外一种写法
        /// <summary>
        /// 创建 SingleObject 的一个空对象
        /// </summary>
        private static SingleObject instance2 = null;
        /// <summary>
        /// 获取全局唯一对象
        /// </summary>
        public static SingleObject getInstance2
        {
            get
            {
                if (instance == null)
                {
                    instance = new SingleObject();
                }
                return instance2;
            }
        }

        #endregion
        /// <summary>
        /// 单例中定义的方法
        /// </summary>
        /// <returns></returns>
        public string showMessage()
        {
            return "这是单例设计模式返回的信息....";
        }
    }
}
